<?php

declare(strict_types=1);

namespace app\admin\validate;

use think\Validate;

class Filingcabinet extends Validate
{
    protected $rule = [
        'file_type'   => 'require|in:10,20,80',
        'file_id'     => 'require|integer|gt:0',
        'title'       => 'max:100',
        'customer_id' => 'require|integer',
        'order_id'    => 'integer|requireIf:file_type,10|requireIf:file_type,20',
        'order_type'  => 'in:wholesal,order|requireIf:file_type,10|requireIf:file_type,20',
    ];

    protected $message = [
        'file_type.require'   => '文件类型不能为空',
        'file_type.in'        => '文件类型不合法',
        'file_id.require'     => '文件ID不能为空',
        'file_id.integer'     => '文件ID必须是整数',
        'file_id.gt'          => '文件ID不能小于1',
        'title.max'           => '文件标题不能超过100个字符',
        'customer_id.require' => '客户ID不能为空',
        'customer_id.integer' => '客户ID必须是整数',
        'order_id.integer'    => '订单ID必须是整数',
        'order_id.requireIf'  => '当文件类型为 10 或 20 时，订单ID（order_id）不能为空',
        'order_type.in'       => '支付订单类型不合法',
        'order_type.requireIf'  => '当文件类型为 10 或 20 时，订单类型（order_type）不能为空',
        'creator.require'     => '创建人ID不能为空',
        'creator.integer'     => '创建人ID必须是整数',
        'create_time.require' => '创建时间不能为空',
        'create_time.date'    => '创建时间格式不正确',
        'update_time.require' => '更新时间不能为空',
        'update_time.date'    => '更新时间格式不正确',
    ];

    protected $scene = [
        'create' => ['file_type', 'file_id', 'title', 'customer_id', 'order_id', 'order_type'],
        'update' => ['file_type', 'file_id', 'title', 'customer_id', 'order_id', 'order_type'],
    ];

    /**
     * 自定义验证规则: 当 file_type 为 10 或 20 时，order_id 必填
     */
    protected function checkOrderId($value, $rule, $data)
    {


        if (in_array($data['file_type'], [10, 20]) && (!isset($data['order_id']) || empty($data['order_id']))) {
            return '当文件类型为 10 或 20 时，订单ID（order_id）不能为空';
        }
        return true;
        return true;
    }
    /**
     * 自定义验证规则: 当 file_type 为 10 或 20 时，order_id 必填
     */
    protected function checkOrderType($value, $rule, $data)
    {
        if (in_array($data['file_type'], [10, 20]) && (!isset($data['order_type']) || empty($data['order_type']))) {
            return '当文件类型为 合同 时，订单类型（order_type）不能为空';
        }
        return true;
    }
}
